package br.edu.delta.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotEmpty;

/**
 * <p>
 * <b>Title:</b> Livro
 * </p>
 * 
 * <p>
 * <b>Description:</b> Livro
 * </p>
 * 
 * <p>
 * <b>Company: </b>
 * </p>
 * 
 * @author Denis
 * 
 * @version 1.0.0
 */
@Entity
@Table(name = "tbl_livros")
@SequenceGenerator(name = EntidadeImpl.SEQUENCE_GENERATOR, sequenceName = "seq_tbl_livros", allocationSize = 1, initialValue = 1)
public class Livro extends EntidadeImpl {

	/** Atributo serialVersionUID. */
	private static final long serialVersionUID = -7160982363065678133L;

	/** Atributo codigo. */
	@NotNull
	@Column(nullable = false)
	private Long codigo;

	/** Atributo nome. */
	@NotEmpty
	@Size(max = 100)
	@Column(nullable = false)
	private String nome;

	/** Atributo isbn. */
	@NotEmpty
	@Size(max = 100)
	@Column(nullable = false)
	private String isbn;

	/** Atributo anoLancamento. */
	@NotEmpty
	@Size(max = 4)
	@Column(nullable = false, name = "ano_lancamento")
	private String anoLancamento;

	/** Atributo editora. */
	@NotEmpty
	@Size(max = 30)
	@Column(nullable = false)
	private String editora;

	/** Atributo autores. */
	@NotEmpty
	@Size(max = 60)
	@Column(nullable = false, name = "autores")
	private String autores;

	/**
	 * Retorna o valor do atributo <code>nome</code>
	 * 
	 * @return <code>String</code>
	 */
	public String getNome() {

		return nome;
	}

	/**
	 * Define o valor do atributo <code>nome</code>.
	 * 
	 * @param nome
	 */
	public void setNome(String nome) {

		this.nome = nome;
	}

	/**
	 * Retorna o valor do atributo <code>isbn</code>
	 * 
	 * @return <code>String</code>
	 */
	public String getIsbn() {

		return isbn;
	}

	/**
	 * Define o valor do atributo <code>isbn</code>.
	 * 
	 * @param isbn
	 */
	public void setIsbn(String isbn) {

		this.isbn = isbn;
	}

	/**
	 * Retorna o valor do atributo <code>anoLancamento</code>
	 * 
	 * @return <code>String</code>
	 */
	public String getAnoLancamento() {

		return anoLancamento;
	}

	/**
	 * Define o valor do atributo <code>anoLancamento</code>.
	 * 
	 * @param anoLancamento
	 */
	public void setAnoLancamento(String anoLancamento) {

		this.anoLancamento = anoLancamento;
	}

	/**
	 * Retorna o valor do atributo <code>editora</code>
	 * 
	 * @return <code>String</code>
	 */
	public String getEditora() {

		return editora;
	}

	/**
	 * Define o valor do atributo <code>editora</code>.
	 * 
	 * @param editora
	 */
	public void setEditora(String editora) {

		this.editora = editora;
	}

	/**
	 * Retorna o valor do atributo <code>autores</code>
	 * 
	 * @return <code>String</code>
	 */
	public String getAutores() {

		return autores;
	}

	/**
	 * Define o valor do atributo <code>autores</code>.
	 * 
	 * @param autores
	 */
	public void setAutores(String autores) {

		this.autores = autores;
	}

	/**
	 * Retorna o valor do atributo <code>codigo</code>
	 * 
	 * @return <code>Long</code>
	 */
	public Long getCodigo() {

		return codigo;
	}

	/**
	 * Define o valor do atributo <code>codigo</code>.
	 * 
	 * @param codigo
	 */
	public void setCodigo(Long codigo) {

		this.codigo = codigo;
	}

}
